<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型链继承</title>
</head>
<body>
    <script>
    // 父类
      function Parent(){
        this.name = "于可可"
        this.arr = [1,2,3,4]
      }
      Parent.prototype.sayName = function(){
          console.log(this.name)
      }
    //   子类
    function Child(){

    }
    // 子类的原型为父类型的一个实例对象
    // 子类的原型指向父类的实例
    Child.prototype = new Parent()
    let child1 = new Child()
    let child2 = new Child()
    child1.sayName()
    // 缺点：1引用类型的属性被所有实例共享
    child1.arr.push(1)
    console.log(child1.arr)//[1,2,3,4,5]
    console.log(child2.arr)//[1,2,3,4,5]
    child1.name = "yqq"
    console.log(child1.name,child2.name)
     // 缺点：创建子类的实例的时候，无法像父类构造函数传参
    // 优点：
    // 1，简单易于实现
    // 1，父类新增原型属性/原型方法，子类都能访问到



    </script>
</body>
</html>